<?php

namespace app\admin\model\scanwork;

use think\Model;

/**
 * 质检入库模型
 */
class QualityInventory extends Model
{
    // 表名
    protected $name = 'scanwork_quality_inventory';
    
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';

    // 定义时间戳字段名
    protected $createTime = 'createtime';
    protected $updateTime = 'updatetime';
    
    // 追加属性
    protected $append = [
        'quality_result_text',
        'inventory_status_text',
        'handle_method_text'
    ];
    
    /**
     * 质检结果文本
     */
    public function getQualityResultTextAttr($value, $data)
    {
        $status = [1 => '合格', 2 => '不合格'];
        return isset($data['quality_result']) ? $status[$data['quality_result']] ?? '' : '';
    }
    
    /**
     * 入库状态文本
     */
    public function getInventoryStatusTextAttr($value, $data)
    {
        $status = [0 => '待入库', 1 => '已入库'];
        return isset($data['inventory_status']) ? $status[$data['inventory_status']] ?? '' : '';
    }
    
    /**
     * 处理方式文本
     */
    public function getHandleMethodTextAttr($value, $data)
    {
        $status = [1 => '合格', 2 => '返工', 3 => '让步接收', 4 => '报废'];
        return isset($data['handle_method']) ? $status[$data['handle_method']] ?? '' : '';
    }
    
    /**
     * 关联报工记录
     */
    public function report()
    {
        return $this->belongsTo('app\admin\model\scanwork\Report', 'report_id', 'id');
    }
    
    /**
     * 关联派工记录
     */
    public function allocation()
    {
        return $this->belongsTo('app\admin\model\scanwork\Allocation', 'allocation_id', 'id');
    }
    
    /**
     * 关联订单
     */
    public function order()
    {
        return $this->belongsTo('app\admin\model\scanwork\Order', 'order_id', 'id');
    }
    
    /**
     * 关联产品型号
     */
    public function productModel()
    {
        return $this->belongsTo('app\admin\model\scanwork\ProductModel', 'model_id', 'id');
    }
    
    /**
     * 关联工序
     */
    public function process()
    {
        return $this->belongsTo('app\admin\model\scanwork\Process', 'process_id', 'id');
    }
    
    /**
     * 关联报工员
     */
    public function user()
    {
        return $this->belongsTo('app\admin\model\Admin', 'user_id', 'id');
    }
    
    /**
     * 关联质检员
     */
    public function qualityUser()
    {
        return $this->belongsTo('app\admin\model\Admin', 'quality_user_id', 'id');
    }
    
    /**
     * 关联入库操作员
     */
    public function inventoryUser()
    {
        return $this->belongsTo('app\admin\model\Admin', 'inventory_user_id', 'id');
    }
    
    /**
     * 关联质检标准
     */
    public function standard()
    {
        return $this->belongsTo('app\admin\model\scanwork\QualityStandard', 'standard_id', 'id');
    }
    
    /**
     * 关联入库明细
     */
    public function details()
    {
        return $this->hasMany('app\admin\model\scanwork\QualityInventoryDetail', 'inventory_id', 'id');
    }
    
    /**
     * 关联入库图片
     */
    public function images()
    {
        return $this->hasMany('app\admin\model\scanwork\QualityInventoryImage', 'inventory_id', 'id');
    }
}
